// 文件名称: ClassroomManagementController.java
// 创建日期: 2023-10-05
// 描述: 教室管理控制器类，负责处理教室管理界面的各种操作。

package org.wisdom.studentchoose;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.Button; // 导入 Button 类
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import org.wisdom.studentchoose.db.Student;
import org.wisdom.studentchoose.db.StudentService;
import javafx.event.ActionEvent; // 导入 ActionEvent 类

import java.io.IOException;

public class ClassroomManagementController {

    @FXML
    private TableView<Student> studentTable; // 学生列表表格

    @FXML
    private TableColumn<Student, String> nameColumn; // 学生姓名列

    @FXML
    private TableColumn<Student, String> numberColumn; // 学号列

    @FXML
    private TableColumn<Student, String> classNameColumn; // 班级列

    @FXML
    private TableColumn<Student, String> groupNameColumn; // 小组名称列

    @FXML
    public void initialize() {
        // 初始化表格列
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name")); // 设置姓名列的数据源
        numberColumn.setCellValueFactory(new PropertyValueFactory<>("studentNumber")); // 设置学号列的数据源
        classNameColumn.setCellValueFactory(new PropertyValueFactory<>("className")); // 设置班级列的数据源
        groupNameColumn.setCellValueFactory(new PropertyValueFactory<>("groupName")); // 设置小组名称列的数据源

        // 初始化表格数据
        studentTable.setItems(FXCollections.observableArrayList()); // 设置表格数据为空的可观察列表
    }

    @FXML
    public void randomSelectStudent() {
        // 调用服务类获取随机学生
        Student student = StudentService.getRandomStudent(); // 获取随机学生

        if (student != null) {
            // 清空表格并添加新学生
            ObservableList<Student> students = FXCollections.observableArrayList(); // 创建一个新的可观察列表
            students.add(student); // 将随机学生添加到列表中
            studentTable.setItems(students); // 更新表格数据
        }
    }

    @FXML
    public void handleReturn(ActionEvent event) { // 添加 ActionEvent 参数
        try {
            // 加载主菜单界面的 FXML 文件
            FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("menu-view.fxml")); // 加载主菜单界面的 FXML 文件
            Scene scene = new Scene(fxmlLoader.load(), 400, 300); // 设置主菜单界面的大小
            Stage stage = (Stage) ((Button) event.getSource()).getScene().getWindow(); // 获取当前窗口
            stage.setScene(scene); // 设置新的场景
            stage.show(); // 显示新的窗口
        } catch (IOException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
    }
}
